//通过文件进行增删改查的demo
const fs = require("fs");
const util = require("util");
const querystring =require("querystring");

var filePath=__dirname+"/users.json";
fs.exists(filePath,function(exist){
    if(!exist){
        throw new Error("数据文件不存在:"+filePath);
    }
    else{
        console.log("确认数据文件存在:"+filePath);
    }
});

var user={
    insert:function(post,callback){
        fs.readFile(filePath,function(error,data){
            if(error){
                callback(error);
            }
            else{
                var list=JSON.parse(data);
                var id=0;
                if(list.length>1){
                    var last=list[list.length-1];
                    id=parseInt(last.id)+1;
                }
                data={"id":id.toString()};
                for(var key in post){
                    if(key!=="id"){
                        data[key]=post[key];
                    }
                }
                list.push(data);
                fs.writeFile(filePath,JSON.stringify(list));
                callback(null,{"id":id});
            }
        });
    },
    delete:function(post,callback){
        if(!post.id){
            callback(new Error("delete,error:ID不能为空"));
            return;
        }
        var id=post.id;

        fs.readFile(filePath,function(error,data){
            if(error){
                callback(error);
            }
            else{
                var list=JSON.parse(data);
                var newList=[];
                var row=0;
                for(var i in list){
                    if(list[i].id===id){
                        row++;
                    }
                    else{
                        newList.push(list[i]);
                    }
                }
                fs.writeFile(filePath,JSON.stringify(newList));
                callback(null,{"row":row});
            }
        });
    },
    update:function(post,callback){
        if(!post.id){
            callback(new Error("update,error:ID不能为空"));
            return;
        }
        var id=post.id;
        delete post.id;

        fs.readFile(filePath,function(error,data){
            if(error){
                callback(error);
            }
            else{
                var list=JSON.parse(data);
                for(var i in list){
                    if(list[i].id===id){
                        for(var key in post){
                            list[i][key]=post[key];
                        }
                        fs.writeFile(filePath,JSON.stringify(list));
                        callback(null,{"row":1});
                        return;
                    }
                }
                callback(null,{"row":0});
            }
        });
    },
    listAll:function(callback){
        fs.readFile(filePath,function(error,data){
            if(error){
                callback(error);
            }
            else{
                list=JSON.parse(data);
                callback(null,list);
            }
        });
    },
    find:function(id,callback){
        fs.readFile(filePath,function(error,data){
            if(error){
                callback(error);
            }
            else{
                var list=JSON.parse(data);
                for(var i in list){
                    if(list[i].id===id){
                        callback(null,list[i]);
                        return;
                    }
                }
                callback(null,{});
            }
        });
    }
}
module.exports=user;